package com.graficas;

/*Activity de ventas primer nivel */

import org.achartengine.chart.PointStyle;
import org.achartengine.model.TimeSeries;
import org.achartengine.model.XYMultipleSeriesDataset;
import org.achartengine.renderer.XYMultipleSeriesRenderer;
import org.achartengine.renderer.XYSeriesRenderer;
import android.graphics.Color;

public class VentasN1 {
	//### VARIABLES ###
	
	//Varibles del activity
	
	private XYMultipleSeriesDataset dataset = null;
	private XYMultipleSeriesRenderer mRenderer = null;
	private String[] meses = {"Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio",
	    					      "Agosto", "Septiembre", "Noviembre", "Diciembre"};
	
	//Variables que son pasadas al activity
	private int[] xValues = null;
	private int[] yValues = null;
	private int[] xValues2 = null;
	private int[] yValues2 = null;
	private String titulo ="";
	
	//### METODOS ###
	
	public XYMultipleSeriesRenderer getmRenderer() {
		return mRenderer;
	}
	
	public void setmRenderer(XYMultipleSeriesRenderer mRenderer) {
		this.mRenderer = mRenderer;
	}
	
	public XYMultipleSeriesDataset getDataset() {
		return dataset;
	}

	public void setDataset(XYMultipleSeriesDataset dataset) {
		this.dataset = dataset;
	}
		
	//tunea las lineas
	public void tuneRender (XYSeriesRenderer render){
		render.setDisplayChartValues(true); //Se muestra valores
		render.setChartValuesTextSize(30); //Tamano de los valores
		render.setChartValuesSpacing(8); //Espacio entre el punto y el valor
		render.setLineWidth(5); //Ancho de linea		
		render.setPointStyle(PointStyle.TRIANGLE); //Punto
		render.setColor(Color.BLUE); //Color de linea
	}
		
	//tunea la grafica
	@SuppressWarnings("deprecation")
	public void tuneGraphic (XYMultipleSeriesRenderer mRenderer, int tipo){
		getmRenderer().setBarSpacing(1);
		
		//Titulo del reportes
		mRenderer.setChartTitle(titulo);
		mRenderer.setFitLegend(true);
		mRenderer.setChartTitleTextSize(30);
		mRenderer.setLabelsColor(Color.WHITE); //Esto es para todos los labels
		
		//Cuadricula
		mRenderer.setShowGrid(true);
		mRenderer.setGridColor(Color.BLACK);
		mRenderer.setXLabels(xValues.length); //Cantidad de lineas
		mRenderer.setYLabels(15); //Cantidad de lineas
			
		//Ejes X,Y
		mRenderer.setPanEnabled(true,true); //Habilitar movimiento {x,y}
			
		//Cuadrar la grafica
		mRenderer.setMargins(new int[] {50, 50, 70, 0}); //{arriba, derecha, izquierda, abajo}
			
		//Leyenda de la grafica
		mRenderer.setLegendTextSize(25);
		mRenderer.setLegendHeight(70);
			
		//mRenderer.setZoomRate(1.1f);
		//mRenderer.setZoomButtonsVisible(true);
			
		//Centrar las barras
		mRenderer.setXAxisMin(this.findMin(xValues)-2);
		mRenderer.setYAxisMin(this.findMin(yValues) - this.getIndicadorY(yValues));
		mRenderer.setXAxisMax(this.findMax(xValues)+2);
		mRenderer.setYAxisMax(this.findMax(yValues) + this.getIndicadorY(yValues));

		if (tipo == 1)
			mRenderer.setXTitle("Precio");
		else{
			mRenderer.setXTitle("No Asistencia"); 
			String[] auxMeses = new String[xValues.length];
			/*if (xValues[0]==1)
				auxMeses [0] = meses[10];
			else if (xValues[0]==2)
				auxMeses [0] = meses[11];
			if (xValues[1]==1)
				auxMeses [1] = meses[11];
			else if (xValues[1]==2)
				auxMeses [1] = meses[0];*/
			
			/*for(int i=0;i<xValues.length;i++)
				auxMeses[i+2] = meses[xValues[i]-1];
			for(int i=0;i<auxMeses.length;i++){
				mRenderer.addXTextLabel(i+1, auxMeses[i]);
			}*/
		}
		mRenderer.setYTitle("VENTAS");
		mRenderer.setAxisTitleTextSize(25);
		mRenderer.setClickEnabled(true);
	}
		
	//Encontrar el minimo de un arreglo
	public int findMin (int[] array){
		int min = array[0];
		for(int i=1;i<array.length;i++)
			if (array[i]<min)
				min = array[i];
		return min;
	}
		
	//Encontrar el maximo de un arreglo
	public int findMax (int[] array){
		int max = array[0];
	for(int i=1;i<array.length;i++)
			if (array[i]>max)
				max = array[i];
		return max;
	}
		
	public int getIndicadorY (int [] array){
		int suma = 0;
		int promedio;
		int indicador = 1;
		for (int i=0;i<array.length;i++)
			suma += array[i];
		promedio = suma/array.length;
			
		while (promedio>0){
			promedio /= 10;
			if (promedio>0)
			indicador *= 10;
		}
		return indicador;
	}
		
	//Pintar reporte (tipo es: 1= anual, 2= trimestrual/mensual)
	public void ejecutar(int[] x, int[] y, String titulo, int tipo) {
		
		this.xValues = x;
		this.yValues = y;
//		this.xValues2 = x2;
//		this.yValues2 = y2;
		this.titulo = titulo;
		dataset = new XYMultipleSeriesDataset();
		mRenderer = new XYMultipleSeriesRenderer();
				
		TimeSeries series = new TimeSeries("Ventas Totales");
		for (int i= 0; i < xValues.length; i++)
		{
			series.add(xValues[i],yValues[i]);
		}
//		TimeSeries series2 = new TimeSeries("Ventas Totales");
//		for (int i= 0; i < xValues2.length; i++)
//		{
//			series.add(xValues2[i],yValues2[i]);
//		}
		dataset.addSeries(series);
//		dataset.addSeries(series2);
		
		XYSeriesRenderer render = new XYSeriesRenderer();
//		XYSeriesRenderer render2 = new XYSeriesRenderer();
		this.tuneRender(render);
//		this.tuneRender(render2);
		
		mRenderer.addSeriesRenderer(render);
//		mRenderer.addSeriesRenderer(render2);
		this.tuneGraphic(mRenderer, tipo);
	}	
}
